home *** CD-ROM | disk | FTP | other *** search
/ Visual Cafe 3 / Visual Cafe 3.ISO / Vcafe / Source.bin / TextAndImageCell.java < prev    next >
Text File  |  1998-08-21  |  5KB  |  187 lines

  1. package symantec.itools.awt.multiList;
  2.  
  3. import java.awt.Image;
  4. import java.awt.Graphics;
  5. import java.awt.FontMetrics;
  6. import symantec.itools.awt.MultiList;
  7.  
  8. // 07/14/97    LAB    Separeated from Multilist.java. Made public to accommodate future
  9. //                extendibility of the MultiList class.
  10. // 07/30/97 CAR marked fields transient as needed
  11.  
  12. /**
  13.  * This is a helper class to the MultiList class.
  14.  * It contains and draws the image and text of a cell.
  15.  * @version 1.1, July 14, 1997
  16.  * @author Symantec
  17.  */
  18. public class TextAndImageCell
  19.     extends Cell
  20.     implements java.awt.image.ImageObserver, java.io.Serializable
  21. {
  22.     /**
  23.      * The MultiList this cell belongs to.
  24.      */
  25.     protected MultiList            list = null;
  26.     /**
  27.      * This cell's text value.
  28.      */
  29.     protected String                text = "";
  30.     /**
  31.      * This cell's image value.
  32.      */
  33.     protected transient Image    im = null;
  34.  
  35.     /**
  36.      * Constructs a default TextAndImageCell.
  37.      * @param l the MultiList this cell is in
  38.      */
  39.     public TextAndImageCell(MultiList l)
  40.     {
  41.         list = l;
  42.     }
  43.  
  44.     /**
  45.      * Constructs a TextAndImageCell with the given text value.
  46.      * @param l the MultiList this cell is in
  47.      * @param s the cell's text value
  48.      */
  49.     public TextAndImageCell(MultiList l, String s)
  50.     {
  51.         list = l;
  52.         text = s;
  53.     }
  54.  
  55.     /**
  56.      * Constructs a TextAndImageCell with the given image value.
  57.      * @param l the MultiList this cell is in
  58.      * @param i the cell's image value
  59.      */
  60.     public TextAndImageCell(MultiList l, Image i)
  61.     {
  62.         list = l;
  63.         im = i;
  64.     }
  65.  
  66.     /**
  67.      * Constructs a TextAndImageCell with the given text and image values.
  68.      * @param l the MultiList this cell is in
  69.      * @param s the cell's text value
  70.      * @param i the cell's image value
  71.      */
  72.     public TextAndImageCell(MultiList l, String s, Image i)
  73.     {
  74.         list = l;
  75.         text = s;
  76.         im = i;
  77.     }
  78.  
  79.     /**
  80.      * Draws the cell using the given graphics context.
  81.      * @param g the graphics context used for drawing
  82.      * @param align the column alignment, one of LEFT, CENTER, or RIGHT
  83.      * @param x the horizontal cell position, in pixels
  84.      * @param y the vertical cell position, in pixels
  85.      * @param w the width of the cell, in pixels
  86.      * @param h the height of the cell, in pixels
  87.      * @param asc the ascent metric of the cell's font
  88.      * @see symantec.itools.awt.MultiList#LEFT
  89.      * @see symantec.itools.awt.MultiList#CENTER
  90.      * @see symantec.itools.awt.MultiList#RIGHT
  91.      */
  92.     public void drawCell(Graphics g, int align, int x, int y, int w, int h, int asc)
  93.     {
  94.         FontMetrics fm = g.getFontMetrics();
  95.         int sw = fm.stringWidth(text);
  96.         int offset = 0;
  97.  
  98.         switch(align)
  99.         {
  100.             case MultiList.LEFT:
  101.             {
  102.                 if (im != null)
  103.                 {
  104.                     g.drawImage(im, x, y, this);
  105.                     offset = im.getWidth(this) + 2;
  106.                 }
  107.  
  108.                 g.drawString(text, x + offset, y+asc);
  109.                 break;
  110.             }
  111.  
  112.             case MultiList.CENTER:
  113.             {
  114.                 if (sw > w)
  115.                     g.drawString(text, x, y+asc);
  116.                 else
  117.                     g.drawString(text, x + (w-sw)/2, y+asc);
  118.                 break;
  119.             }
  120.  
  121.             case MultiList.RIGHT:
  122.             {
  123.                 if (sw > w)
  124.                     g.drawString(text, x, y+asc);
  125.                 else
  126.                     g.drawString(text, x+w-sw-6, y+asc);
  127.                 break;
  128.             }
  129.         }//switch
  130.     }
  131.  
  132.     /**
  133.      * Returns this cell's text.
  134.      */
  135.     public String getText()
  136.     {
  137.         return text;
  138.     }
  139.  
  140.     /**
  141.      * Returns this cell's image.
  142.      */
  143.     public Image getImage()
  144.     {
  145.         return im;
  146.     }
  147.  
  148.     /**
  149.      * Incrementally updates an image as image data becomes available.
  150.      * This is a standard Java AWT method which gets called by the AWT to
  151.      * incrementally draw an image as more image data becomes available.
  152.      * @param img the image being drawn
  153.      * @param flags image update flags (see class ImageObserver)
  154.      * @param x horizontal position, in pixels
  155.      * @param y vertical position, in pixels
  156.      * @param w width, in pixels
  157.      * @param h height, in pixels
  158.      *
  159.      * @return true if image has been completely loaded
  160.      *
  161.      * @see java.awt.image.ImageObserver
  162.      * @see java.awt.image.ImageObserver#imageUpdate
  163.      */
  164.     public boolean imageUpdate(Image img, int flags, int x, int y, int w, int h)
  165.     {
  166.         if ((flags & (ALLBITS|ABORT)) != 0)
  167.         {
  168.             list.redraw();
  169.             list.repaint();
  170.             return false;
  171.         }
  172.  
  173.         return true;
  174.     }
  175.  
  176.     /**
  177.      * Returns a string representation of this component.
  178.      * This is a standard Java AWT method which gets called to generate
  179.      * a string that represents this component.
  180.      *
  181.      * @return a meaningful string about this object
  182.      */
  183.     public String toString()
  184.     {
  185.         return text;
  186.     }
  187. }